package com.装饰模式;

/**
 * 使用装饰模式模拟InputStream
 * 装饰模式：再不改变原类的基础上，动态的扩展一个类的功能
 * 1.定义一个InputStream接口
 * 2.定义一个实现类实现InputStream接口的功能
 * 3.定义一个装饰类扩展实现类的功能
 */

public class Test {
    public static void main(String[] args) {
        //创建一个PackageFileInputStream装饰对象
        InputStream inputStream=new PackageFileInputStream(new FileInputStream());
        System.out.println(inputStream.read());
        System.out.println(inputStream.read(new byte[3]));
        //增强FIleInput实现类的功能
        //读取了一个字节a:
        //97
        //提供8KB的缓冲区增强FIleInput实现类的功能
        //读取了一个字节数组:[97, 98, 99]
        //3
    }
}
